use strict;
use warnings;
use CDMA;

# robi xor ze wszystkich elementow dwoch tablic
sub xor_A(\@\@) {
	my ($a, $b) = @_;
	my $c = [];	
	for ( 0 .. $#$a ) { 
		@$a[$_] == @$b[$_] and @$c[$_] = -1;
		@$a[$_] != @$b[$_] and @$c[$_] = 1;
	}
	return $c;
}

#~~~~~~~~~~~~~~ ciagi golda 64-bitowe

# wczytanie wygenerowanych ciagow maksymalnych
open FH, "data/cm_63";
my @cm1 = split(/ /, <FH>); pop @cm1;
my @cm2 = split(/ /, <FH>); pop @cm2;
close FH;

# generacja 4-ech 64-bitowych ciagow golda
my @golds = ();
for ( 0 .. 3 ) {
	push @golds, xor_A(@cm1, @cm2);
	unshift @cm2, pop @cm2;
}
for (@golds) { push @$_, 1 }; # dodanie "1" na koncu do 64 bitow

# zapis do pliku
open FH, "> data/gold_64" or die $!;
print FH "@{$_} \n" for (@golds);
close FH;

#~~~~~~~~~~~~~~ ciagi golda 512-bitowe

# wczytanie wygenerowanych ciagow maksymalnych
open FH, "data/cm_511";
@cm1 = split(/ /, <FH>); pop @cm1;
@cm2 = split(/ /, <FH>); pop @cm2;
close FH;

# generacja 4-ech 64-bitowych ciagow golda
@golds = ();
for ( 0 .. 3 ) {
	push @golds, xor_A(@cm1, @cm2);
	unshift @cm2, pop @cm2;
}
for (@golds) { push @$_, 1 }; # dodanie "1" na koncu do 64 bitow

# zapis do pliku
open FH, "> /data/gold_512" or die $!;
print FH "@{$_} \n" for (@golds);
close FH;
